package flst.ipiweb.persistance.dao;

import java.util.List;

import flst.ipiweb.transverse.Administrateur;
import flst.ipiweb.transverse.IPIException;

public interface IAdministrateurDao {
	
	/**
	 * Cette méthode permet de créer un nouvel administrateur en base
	 * @param admin le nouvel administrateur
	 * @throws IPIException 
	 */
	public void createAdministrateur(Administrateur admin) throws IPIException;
	
	/**
	 * Cette méthode permet de mettre à jour un administrateur en base
	 * @param admin l'administrateur à mettre à jour
	 * @throws IPIException 
	 */
	public void updateAdministrateur(Administrateur admin) throws IPIException;
	
	/**
	 * Cette méthode permet de récupérer la liste des administrateurs en base
	 * @return List<Administrateur> la liste des administrateur
	 * @throws IPIException 
	 */
	public List<Administrateur> listerAdministrateurs() throws IPIException;
	
	/**
	 * Cette méthode permet de supprimer un administrateur en base
	 * @param admin : l'administrateur à supprimer
	 */
	public void deleteAdministrateur(Administrateur admin) throws IPIException;
	
	/**
	 * Cette méthode permet de retrouver un administrateur en base grâce à son identifiant
	 * @param idAdministrateur : identifiant de l'administrateur
	 * @return Administrateur : l'administrateur trouvé
	 * @throws IPIException 
	 */
	public Administrateur getAdministrateurById(int idAdministrateur) throws IPIException;
	
	/**
	 * Cette méthode permet de vérifier si le login de l'administrateur existe
	 * @param admin : administrateur dont le login est à vérifier
	 * @return Boolean : "true" si le login de l'admin existe, "false" sinon
	 * @throws IPIException 
	 */
	public Boolean loginExiste(Administrateur admin) throws IPIException;
	
	/**
	 * Cette méthode permet de vérifier l'existance du couple login/password
	 * @param admin : administrateur à vérifier
	 * @return Administrateur : l'administrateur trouvé
	 * @throws IPIException
	 */
	public Administrateur loginPasswordExist(Administrateur admin) throws IPIException;
	

}
